Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Singleton a inne rozwiązania
wookieb
post
Post #1





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Od ostatniego czasu zauważam wielką nagonkę na Singletona. Aż czasem głupio mi poradzić komuś w temacie by użył singletona bo zaraz pod spodem sypią sie posty typu
"Singleton ssie",
"Singleton jest dla leniwych",
"Singleton to zło" i podobne.

Osobiście nie rozumiem, dlaczego ludzie tak bardzo na to naskakują.

W swoim "frameworku" używam singletona dość często z jednego ważnego względu. Mam sporą ilość klas, których konieczne jest istnienie jednego egzemplarza.

Oto przykładowe klasy.

Site:
  • Przechowuje wszystkie ustawienia dotyczące działania systemu (znak separacjie urla i sporo takich typowo systemowych)
  • do niej importuje listę plików jakie należy dołączyć w htmlu w sekcji head
  • posiada egzemplarz klasy do obsługi URL (tworzenie, parsowanie, analiza)
  • Komunikaty dla użytkownika
  • tutaj pare innych mniej waznych funkcji
Nie widzę innego rozwiązania jak singleton. Nie wyobrazam sobie trzymania wartości klasy jako statycznych i za kazdym razem odwoływania sie do tej klasy poprzez
  1. <?php
  2. $site=new Site();
  3. ?>


Baza danych:
Tutaj chyba nie trzeba mówić, co owa klasa czyni. Rozumiem argument "A co jeżeli chcesz utworzyć połączenie z nową bazą danych?"
Można to rozwiązać bez najmniejszego problemu (np. utworzenie klasy dbConnection). Lecz w większości przypadków korzysta się z jednej bazy i jednego pola.
Singleton jak najbardziej na +;

System szablonów:
Rozszerzenie Open Power Template, gdzie dodałem singletona. Dlaczego? Bez sensu jest za każdym razem tworzenie nowego egzemplarza nawet jak chce przeparsować tylko małą część strony, niepotrzebne użycie pamięcie poprzez wartości każdego nowego egzemplarza.
Singleton + za mniejsze zużycie pamięci.

Użytkownik:
Całą gama funkcji operujących na użytkowniku, wylogowanie, logowanie, zmiana danych, zalanie herbaty, masaż i wiele innych.
Przechowuje wszystkie informacje o użytkowniku, Od jego id po preferencje, do uprawnień.
Singleton +. Jeden użytkownik jeden obiekt.

Chciałbym teraz wiedzieć jakie są argumenty osób, tak bardzo nienawidzących singletona, przemawiające za tym żeby nie używać singletona w owych sytuacjach albo wskazać inne rozwiązania które owy problem rozwiążą.

Przyznam, że nie jestem super specem od znajomości mnóstwa Wzorców Projektowych. Chętnie poznam nowe rozwiązania i pomysły które oświecą i zbeszczeszczą moje dobre zdanie o singletonie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .

Rozwiązania które nie wchodzą w grę:
global - bron boze jak gdzies ponadpisuje egzemplarze klas
przekazywanie do kazdego obiektu wskaznika do tych klas - masochistą nie jestem aby każdy mój konstruktor składał się z bogatej listy argumentów.

Ten post edytował wookieb 8.06.2009, 07:19:26
Go to the top of the page
+Quote Post

Posty w temacie
- wookieb   Singleton a inne rozwiązania   7.06.2009, 22:27:51
- - Crozin   CytatOd ostatniego czasu zauważam wielką nagonkę n...   7.06.2009, 22:43:13
- - kbsucha   Cytat(wookieb @ 7.06.2009, 23:27:51 )...   7.06.2009, 22:46:31
- - LBO   Widzisz, tu nie chodzi do końca o to gdzie się sin...   7.06.2009, 23:13:31
|- - dr_bonzo   Cytat(LBO @ 8.06.2009, 00:13:31 ) Wid...   8.06.2009, 07:41:45
- - wookieb   Cytat(kbsucha @ 7.06.2009, 23:46:31 )...   8.06.2009, 07:20:55
- - erix   Cytatprzekazywanie do kazdego obiektu wskaznika do...   8.06.2009, 07:53:21
- - LBO   Cytat@LBO: to prosze, pokaz jak rozwiazujesz probl...   8.06.2009, 08:10:38
- - mike   Ja chciałbym się przyłączyć do ~LBO żeby nie wyszł...   8.06.2009, 09:13:44
- - orglee   A co w takim razie z menadżerem bazy danych. Skoro...   8.06.2009, 15:57:38
- - wookieb   Strasznie nie podoba mi się wstrzykiwanie wsk...   11.06.2009, 21:37:59
- - LBO   Cytat(mike @ 8.06.2009, 10:13:44 ) Ja...   11.06.2009, 22:51:30
- - wookieb   Cytat(LBO @ 11.06.2009, 23:51:30 ) G...   12.06.2009, 08:31:39
- - LBO   Cytat(wookieb @ 12.06.2009, 09:31:39 ...   12.06.2009, 09:54:42
- - wookieb   Mylisz się. Wrzucam tylko te które używa...   12.06.2009, 10:16:59
- - rzymek01   Ze swojej strony chciałbym się dowiedzie...   12.06.2009, 11:25:33
- - fifi209   @up Ta klasa rejestruje zmienne, usuwasz singleto...   12.06.2009, 11:39:36
- - wookieb   Cytat(fifi209 @ 12.06.2009, 12:39:36 ...   12.06.2009, 12:20:31
|- - fifi209   Cytat(wookieb @ 12.06.2009, 13:20:31 ...   12.06.2009, 12:23:07
- - wookieb   Cytat(fifi209 @ 12.06.2009, 13:23:07 ...   12.06.2009, 12:29:23
|- - fifi209   Cytat(wookieb @ 12.06.2009, 13:29:23 ...   12.06.2009, 12:40:38
- - ernie242   To może być dobra wiadomość: C...   18.06.2009, 19:55:59
- - wookieb   Pozwolę sobię odświeżyć temat. Ostatecznie wybrałe...   6.07.2009, 22:02:05


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 22:49